package visiopuce.service;

import java.util.Date;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import visiopuce.ApplicationContexte;
import visiopuce.HibernateUtil;
import visiopuce.DAO.HistoriqueDAO;
import visiopuce.DAO.HistoriqueDAOImpl;
import visiopuce.DAO.NonConformiteDAO;
import visiopuce.DAO.NonConformiteDAOImpl;
import visiopuce.objets.Historique;
import visiopuce.objets.NonConformite;

public class NonConformiteServiceImpl implements NonConformiteService {

	private static final Log log = LogFactory.getLog(HistoriqueService.class);

	private NonConformiteDAO nonConformiteDAO = NonConformiteDAOImpl.getInstance();
	private HistoriqueDAO historiqueDAO = HistoriqueDAOImpl.getInstance();

	/** Constructeur priv� */
	private NonConformiteServiceImpl() {
	}

	/** Instance unique non pr�initialis�e */
	private static NonConformiteServiceImpl INSTANCE = null;

	/** Point d'acc�s pour l'instance unique du singleton */
	public static NonConformiteService getInstance() {
		if (INSTANCE == null) {
			INSTANCE = new NonConformiteServiceImpl();
		}
		return INSTANCE;
	}

	public void save(NonConformite f) {
		HibernateUtil.beginTransaction();
		try {
			nonConformiteDAO.save(f);

			Historique h2 = new Historique();
			h2.setDate(new Date());
			h2.setRequete("Enregistrement " + f.toString());
			h2.setUtilisateur(ApplicationContexte.getInstance().getUtilisateur());
			historiqueDAO.save(h2);
			HibernateUtil.commitTransaction();
		} catch (Exception ex) {
			ex.printStackTrace();
			HibernateUtil.rollbackTransaction();
		} finally {
			HibernateUtil.closeSession();
		}
	}

	@Override
	public List<NonConformite> getNonConformite(Integer idNonConformite) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<NonConformite> getNonConformiteByIdPersonne(Integer idPersonne) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public NonConformite getNonConformiteById(int parseInt) {
		// TODO Auto-generated method stub
		return null;
	}

}